package br.com.virtual.relatorio.model;

import br.com.virtual.base.model.VirtualModel;

public class ProdutoRelatorio extends VirtualModel implements Comparable<ProdutoRelatorio>{

	private static final long serialVersionUID = 1L;

	private Long id;
	private String nome, modelo, fabricante;
	private Integer quantidade, numeroVendas;
	private double total;
	
	public ProdutoRelatorio(){
		
	}
	
	//p.id, p.nome, p.modelo, p.fabricante, sum(iv.quantidade) as quantidade, sum(total) as total, count(p.id) as numero_vendas
	public ProdutoRelatorio(Long id, String nome, String modelo, String fabricante, 
							Integer quantidade, double total, Integer numeroVendas){
		setId(id);
		setNome(nome);
		setModelo(modelo);
		setFabricante(fabricante);
		setQuantidade(quantidade);
		setTotal(total);
		setNumeroVendas(numeroVendas);
	}
	
	public Integer getNumeroVendas() {
		return numeroVendas;
	}
	public void setNumeroVendas(Integer numeroVendas) {
		this.numeroVendas = numeroVendas;
	}
	
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public double getTotal() {
		return total;
	}
	public void setTotal(double total) {
		this.total = total;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getModelo() {
		return modelo;
	}
	public void setModelo(String modelo) {
		this.modelo = modelo;
	}
	public String getFabricante() {
		return fabricante;
	}
	public void setFabricante(String fabricante) {
		this.fabricante = fabricante;
	}
	public Integer getQuantidade() {
		return quantidade;
	}
	public void setQuantidade(Integer quantidade) {
		this.quantidade = quantidade;
	}
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result
				+ ((fabricante == null) ? 0 : fabricante.hashCode());
		result = prime * result + ((modelo == null) ? 0 : modelo.hashCode());
		result = prime * result + ((nome == null) ? 0 : nome.hashCode());
		return result;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		ProdutoRelatorio other = (ProdutoRelatorio) obj;
		if (fabricante == null) {
			if (other.fabricante != null)
				return false;
		} else if (!fabricante.equals(other.fabricante))
			return false;
		if (modelo == null) {
			if (other.modelo != null)
				return false;
		} else if (!modelo.equals(other.modelo))
			return false;
		if (nome == null) {
			if (other.nome != null)
				return false;
		} else if (!nome.equals(other.nome))
			return false;
		return true;
	}

	@Override
	public String toString() {
		return "ProdutoRelatorio [id=" + id + ", nome=" + nome + ", modelo="
				+ modelo + ", fabricante=" + fabricante + ", quantidade="
				+ quantidade + ", numeroVendas=" + numeroVendas + ", total="
				+ total + "]";
	}

	@Override
	public int compareTo(ProdutoRelatorio o) {
		return this.getQuantidade().compareTo(o.getQuantidade());
	}

	
}
